import Vue from 'vue'
import env from '../app/env'
//图片预览
Vue.prototype.lookImg = function(url) {
	uni.previewImage({
		current: 1, //预览图片的下标
		urls: [url] //预览图片的地址，必须要数组形式，如果不是数组形式就转换成数组形式就可以
	})
}
//身份证正则验证
// 函数参数必须是字符串，因为二代身份证号码是十八位，而在javascript中，十八位的数值会超出计算范围，造成不精确的结果，导致最后两位和计算的值不一致，从而该函数出现错误。
// 详情查看javascript的数值范围
Vue.prototype.checkIDCard = function(idcode) {
	// 加权因子
	var weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
	// 校验码
	var check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];

	var code = idcode + "";
	var last = idcode[17]; //最后一位

	var seventeen = code.substring(0, 17);

	// ISO 7064:1983.MOD 11-2
	// 判断最后一位校验码是否正确
	var arr = seventeen.split("");
	var len = arr.length;
	var num = 0;
	for (var i = 0; i < len; i++) {
		num = num + arr[i] * weight_factor[i];
	}

	// 获取余数
	var resisue = num % 11;
	var last_no = check_code[resisue];

	// 格式的正则
	// 正则思路
	/*
	第一位不可能是0
	第二位到第六位可以是0-9
	第七位到第十位是年份，所以七八位为19或者20
	十一位和十二位是月份，这两位是01-12之间的数值
	十三位和十四位是日期，是从01-31之间的数值
	十五，十六，十七都是数字0-9
	十八位可能是数字0-9，也可能是X
	*/
	var idcard_patter =
		/^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;

	// 判断格式是否正确
	var format = idcard_patter.test(idcode);

	// 返回验证结果，校验码和格式同时正确才算是合法的身份证号码
	return last === last_no && format ? true : false;
}
//金额格式化
Vue.prototype.toThousands = function(s) {
	//debugger
	if (s === 0) {
		return 0.00;
	} else if (s === null || s === undefined || s === '') {
		return '';
	} else {
		let n = 2
		s = parseFloat((s + "").replace(/[^\d\.-]/g, "")) + "";
		let l = s.split(".")[0].split("").reverse()
		let r = ''
		if (s.split(".")[1] !== undefined) {
			r = s.split(".")[1];
		}
		let t = "";
		let isF = false
		if (l[l.length - 1] == '-') {
			isF = true
			l.remove('-')
		}
		for (let i = 0; i < l.length; i++) {
			t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
		}
		if (isF) {
			if (s.split(".")[1] === undefined) {
				return '-' + t.split("").reverse().join("") + '.00';
			} else {
				return '-' + t.split("").reverse().join("") + "." + r;
			}
		} else {
			if (s.split(".")[1] === undefined) {
				return t.split("").reverse().join("") + '.00';
			} else {
				return t.split("").reverse().join("") + "." + r;
			}
		}

	}


}

//数组删除
Array.prototype.remove = function(val) {
	var index = this.indexOf(val);
	if (index > -1) {
		this.splice(index, 1);
	}
};

//删除数组
/* arr 循环的数组 */
/* item 需要删除的元素 */
/* type 全局类 */
Vue.prototype.stdDel = function(arr, item, type) {

	uni.showModal({
		title: '提示',
		content: '确认删除？',
		success(res) {
			if (res.confirm) {
				if (item.uuid !== '' && item.uuid !== undefined && item.uuid !== null) {
					if (getApp().globalData.stdOffsursDelete[type] == undefined) {
						getApp().globalData.stdOffsursDelete[type] = []
					}
					getApp().globalData.stdOffsursDelete[type].push(item.uuid)
					//console.log(getApp().globalData.stdOffsursDelete)
				}
				return arr.remove(item)
			} else if (res.cancel) {
				console.log('用户点击取消');
			}

		}
	})


}
//请求封装
Vue.prototype.sendRequest = function(param) {
	var _self = this,
		url = param.url,
		method = (param.method || 'POST').toUpperCase(),
		header = {
			'content-type': Object.prototype.toString.call(data) === '[object FormData]' ?
				'multipart/form-data' : 'application/json',
		},
		data = param.data || {},
		//token = '',
		hideLoading = param.hideLoading || false
	// get请求去除缓存
	if (method === 'GET') {
		//data._ = +new Date()
	}
	if (param.header) {
		header = {
			...param.header,
			...header,
		}
	}
	if (param.query) {
		let mark = url.indexOf('?') > -1 ? '&' : '?'
		url += mark
		for (let key in param.query) {
			url += key + '=' + param.query[key] + '&'
		}
		url = url.slice(0, -1)
	}

	//拼接完整请求地址http://192.168.1.110:8809/customer/token  //http://36.32.166.60:8808/
	url =
		(url.indexOf('http') > -1 ? '' : env.baseUrl) + url

	// #ifdef MP-WEIXIN
	//data["device"] = "wxapp";
	//data["ver"] = "1.1.30";
	// #endif
	// #ifdef APP-PLUS || H5
	//data["device"] = "iosapp";
	//data["ver"] = "1.0.0";
	// #endif

	//请求方式:GET或POST(POST需配置header: {'content-type' : "application/x-www-form-urlencoded"},)
	//用户交互:加载圈
	if (!hideLoading) {
		uni.showLoading({
			mask: true,
		})
	}

	//console.log("网络请求start");
	//网络请求
	uni.request({
		url,
		method,
		header,
		data,
		// success: (res) => {
		//   //console.log('网络请求success:', res)
		//   if (res.statusCode && res.statusCode != 200 && !param.custom) {
		//     //api错误
		//     uni.showModal({
		//       showCancel: false,
		//       content: (res.data && res.data.error) || res.errMsg,
		//     })
		//     return
		//   }
		//   if (res.data.code) {
		//     //返回结果码code判断:200成功,1000错误,-1未登录(未绑定/失效/被解绑)
		//     if (res.data.code != '200') {
		//       if (param.custom) {
		//         console.log('自定义code 1000 提示', res.data)
		//       } else {
		//         uni.showModal({
		//           showCancel: false,
		//           content: res.data.message,
		//         })
		//       }
		//     }

		//     typeof param.success == 'function' &&
		//       res.data &&
		//       param.success(res.data)
		//   } else {
		//     if (!param.custom) {
		//       uni.showModal({
		//         showCancel: false,
		//         content: 'No ResultCode:' + res.data.msg,
		//       })
		//     }
		//   }
		// },
		complete: (res) => {
			//console.log('网络请求complete--start', url)
			//console.log(res.data)
			//console.log('complete--end')


			if (res.statusCode != 200 && !param.custom) {
				//api错误
				uni.showModal({
					showCancel: false,
					content: '网络错误,请重试' //(res.data && res.data.error) || res.errMsg,
				})
				uni.hideLoading()
				return
			}
			if (!hideLoading || !res.data) {
				uni.hideLoading()
			}

			if (!res.data) {
				uni.showModal({
					title: '提示',
					showCancel: false,
					content: '请求超时，请重试'
				})
				uni.hideLoading()
				console.log('超时:', res)
			}
			typeof param.complete == 'function' &&
				res.data &&
				param.complete(res.data)
		}
	})
}

Date.prototype.Format = function(fmt) {
	// author: meizz
	var o = {
		'M+': this.getMonth() + 1, // 月份
		'd+': this.getDate(), // 日
		'h+': this.getHours(), // 小时
		'm+': this.getMinutes(), // 分
		's+': this.getSeconds(), // 秒
		'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
		S: this.getMilliseconds(), // 毫秒
	}
	if (/(y+)/.test(fmt))
		fmt = fmt.replace(
			RegExp.$1,
			(this.getFullYear() + '').substr(4 - RegExp.$1.length)
		)
	for (var k in o)
		if (new RegExp('(' + k + ')').test(fmt))
			fmt = fmt.replace(
				RegExp.$1,
				RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
			)
	return fmt
}
